查看原文
其他

版权案例丨全国首起民事生效判决——GPL抗辩获得法院支持!

知产宝
2024-08-26



——南京未来高新技术有限公司与江苏云蜻蜓信息科技有限公司、刘某某侵害计算机软件著作权纠纷案




裁判要旨




非正当手段获取包含GPL协议软件源代码的行为,一方面,虽然其获取的源代码中包含GPL协议,但是由于该行为未通过权利人发布的正当手段取得源代码,且与我国著作权保护的精神相违背,不应认定其获取了权利人软件的GPL授权许可。另一方面,非正当手段获取包含GPL协议软件源代码的行为人,由于对权利人软件实施了复制、修改、分发等行为,其实际上以实践行为做出了对GPL协议要约的承诺,其负有GPL协议中的所约定的相关义务。本案中,对原告违反GPL协议的行为给予侵权法上的保护,势必虚置GPL协议关于源代码持续开源的相关规定,对于通过GPL协议让源代码持续开源传播产生不利影响。


判断GPL协议所能传染的衍生软件或修订版本,区分开源代码与自有代码,即确定自有代码是如何与开源代码结合或交互是前提。其次应结合代码的使用场景,即结合代码的功能及其在软件中所起的作用进行判断。最终确定被传染的部分应当是与原开源软件形成密切通信使得二者高度牵连融合成一体的程序,而非只要有数据交换就会构成传染。本案中,预览程序不是涉案GPL开源代码的衍生作品,未被GPL开源代码传染,故不受GPL协议的约束。原告主张该部分软件著作权的保护,以及被告是否侵害该部分软件著作权的判断,均不受GPL协议的影响。




裁判文书摘要


案号

(2021)苏01民初3229号

案由

侵害计算机软件著作权纠纷

合议庭

审   判   长  谢慧岚

审   判   员  雒   强

审   判   员  芮旭丽

技术调查官
张耀超
法官助理

刘淑娇

书记员韩   颖
当事人

原告:南京未来高新技术有限公司,住所地江苏省南京市秦淮区中山南路41410021003室。

法定代表人:匡良,该公司总经理。

委托诉讼代理人:沈哲,北京大成(南京)律师事务所律师。

委托诉讼代理人:单文峰,北京大成(南京)律师事务所律师。

被告:江苏云蜻蜓信息科技有限公司,住所地江苏省南京市建邺区泰山路15111层。

法定代表人:刘轶,该公司总经理。

委托诉讼代理人:蒋海军,江苏瑞途律师事务所律师。

委托诉讼代理人:谭缙,国浩律师(南京)事务所律师。

被告:刘某某。

委托诉讼代理人:陶冶,国浩律师(南京)事务所律师。

委托诉讼代理人:李维朝,江苏瑞途律师事务所律师。

裁判结果

被告江苏云蜻蜓信息科技有限公司于本判决生效之日起十日内赔偿原告南京未来高新技术有限公司经济损失300万元;

二、被告江苏云蜻蜓信息科技有限公司于本判决生效之日起十日内赔偿原告南京未来高新技术有限公司为制止侵权行为所支出的合理费用10000元;

三、驳回原告南京未来高新技术有限公司对被告刘某某的诉讼请求;

四、驳回原告南京未来高新技术有限公司的其他诉讼请求。

裁判时间
二〇二二年九月十九日
涉案法条

《中华人民共和国著作权法》第十条、第五十三条第一项、第五十四条,《计算机软件保护条例》第五条、第七条、第八条、第二十三条、第二十四条,《最高人民法院关于审理著作权民事纠纷案件适用法律若干问题的解释》第七条、第二十六条,《最高人民法院关于审理侵害知识产权民事案件适用惩罚性赔偿的解释》第三条第一款、第四条第一款,《中华人民共和国民事诉讼法》第一百四十五条


(点击图片,欢迎使用)

当您阅读至此,如果有最新的典型案例希望知产宝数据平台推送,请添加知产小管家微信(微信号ip_butler或18611183071),并注明姓名和工作单位,知产宝将为您提供专属服务;亦可点击文末“阅读原文”登录知产宝官方网站进行商标、专利、裁判文书一站式检索。

中国领先知识产权法律数据产品与服务提供商



裁判文书


江苏省南京市中级人民法院

民事判决书



(2021)苏01民初3229号

当事人


原告:南京未来高新技术有限公司,住所地江苏省南京市秦淮区中山南路414号1002、1003室。法定代表人:匡良,该公司总经理。委托诉讼代理人:沈哲,北京大成(南京)律师事务所律师。委托诉讼代理人:单文峰,北京大成(南京)律师事务所律师。



被告:江苏云蜻蜓信息科技有限公司,住所地江苏省南京市建邺区泰山路151号11层。法定代表人:刘轶,该公司总经理。委托诉讼代理人:蒋海军,江苏瑞途律师事务所律师。委托诉讼代理人:谭缙,国浩律师(南京)事务所律师。被告:刘某某。委托诉讼代理人:陶冶,国浩律师(南京)事务所律师。委托诉讼代理人:李维朝,江苏瑞途律师事务所律师。


审理经过

原告南京未来高新技术有限公司(以下简称未来公司)与被告江苏云蜻蜓信息科技有限公司(以下简称云蜻蜓公司)、刘某某侵害计算机软件著作权纠纷一案,本院于2021年10月8日立案后,依法适用普通程序,并指派技术调查官张耀超辅助案件技术事实查明。本院组织当事人进行了多次证据交换,并于2022年7月27日公开开庭进行了审理。原告未来公司的委托诉讼代理人沈哲、单文峰,被告云蜻蜓公司的委托诉讼代理人蒋海军、谭缙,刘某某的委托诉讼代理人陶冶、李维朝到庭参加诉讼。本案现已审理终结。

原告诉称

原告未来公司向本院提出诉讼请求:1.二被告连带赔偿原告经济损失3000万元;2.二被告连带承担原告为制止侵权行为所支付的合理费用(包括公证费、保全保险费)共计29000元;3.二被告承担本案诉讼费用、保全费用等。审理中,原告未来公司变更第1项诉讼请求为:二被告连带赔偿原告经济损失2000万元。


事实与理由:“未来网上投标文件制作工具软件”系原告自主开发,于2014年7月4日完成计算机软件著作权登记并取得登记证书。原告于2015年4月1日与南京市公共资源交易中心签署协议,约定将上述计算机软件置于其官方网站(网址:http://www.njzwFw.gov.cn)供用户下载使用,每次下载使用费为100元整。2017年4月,原告在南京市公共资源交易中心网站发现被告云蜻蜓公司发布的“云蜻蜓软件-投标文件制作工具”软件在功能及实现上与原告软件存在高度近似,经对比,被告云蜻蜓公司提供下载的上述软件内部函数与原告软件完全一致,且被告刘某某原系原告研发部软件工程师,参与了“未来软件一投标文件制作工具”的研发和后期维护,其于2016年5月从原告处离职,后在被告云蜻蜓公司就职。为维护合法权利,原告遂向南京市中级人民法院提起诉讼,请求判令云蜻蜓公司、刘某某连带承担侵权责任。经审理,南京市中级人民法院于2020年12月28日作出了(2018)苏01民初2523号民事判决,判令云蜻蜓公司、刘某某立即停止侵害并连带赔偿原告经济损失及维权开支。针对云蜻蜓公司、刘某某的上诉,最高人民法院于2021年5月26日作出(2021)最高法知民终406号民事判决,驳回上诉,维持原判。在上述案件审理过程中,云蜻蜓公司、刘某某的侵权行为一直处于持续状态,在终审判决生效后,原告发现被告云蜻蜓公司仍然在南京市公共资源交易中心网站提供“南京工程版投标工具”软件使用下载并收取费用,经下载该软件与原告享有著作权的软件比对,被诉侵权软件在功能及实现上与原告软件仍构成实质性相似,“南京工程版投标工具”中配置文件及代码中特有的部分标识、客户名称简称、程序文件的GUID以及拼写上的很多明显错误等与原告软件完全一致。截至2021年8月30日,被诉侵权软件已经累计下载使用419532次,扣除(2018)苏01民初2523号民事判决认定的原告已经主张的38550次,二被告持续侵权行为所涉的被诉侵权软件后续下载使用次数达到380982次,按照每次100元计(目前按南京公共资源交易中心要求调整为限额以上招标项目90元/次、限额以下招标项目50元/次),被告获得的非法所得在3500万元以上。原告认为,二被告在原告提起诉讼后,仍持续实施侵权行为,被告刘某某与原告曾经存在劳动关系,且接触过涉案计算机软件,被告云蜻蜓公司在明知被告刘某某与原告曾经存在劳动关系仍然持续性提供被诉侵权软件下载,在前述诉讼进行期间矢口否认侵权事实,具有非常明显的主观故意。同时,最高人民法院终审判决判令二被告承担责任后,其仍然提供被诉侵权软件的下载,持续实施侵权行为,以侵害原告合法计算机软件著作权为业,侵权获利并导致原告受损巨大,情节非常严重。按照《最高人民法院关于审理侵害知识产权民事案件适用惩罚性赔偿的解释》相关规定,应当承担惩罚性赔偿责任。

被告辩称


被告云蜻蜓公司辩称:1.其被诉侵权软件与原告涉案软件不构成实质性相似,云蜻蜓公司相关行为不构成著作权侵权。2.因侵权不成立,云蜻蜓公司不应承担民事责任。


被告刘某某辩称:一、刘某某不构成个人侵权或职务侵权,原告诉请刘某某承担连带贵任没有事实和法律依据。1.关于软件是否侵权的问题,同意被告云蜻蜓公司的答辩意见。2.(2018)苏01民初2523号案件中,法院通过刘某某曾在原告未来公司工作过,且在离职交接单上签字的行为,认定刘某某存在接触未来公司软件源代码的可能性,最终推定刘某某复制了未来公可源代码,构成侵权。但本案中,刘某某在2017年9月第一次接到未来公司起诉材料后即删除了未来公司相关的所有资料,而原告在(2018)苏01民初2523号案起诉时已将若干个版本的完整源代码作为证据向云蜻蜓公司提供,即云蜻蜓公司已直接接触到了案涉源代码,本案中已经不再具有再次推定刘某某实施了复制行为的基础。本案中接触加实质性相似规则下的接触行为源于云蜻蜓公司的直接接触,并无证据证明刘某某个人实施了任何新的复制原告源代码的行为。3.刘某某在原告所诉的侵权期间内主要工作职责是云蜻蜓公司的运营和销售工作,原告没有证据证明案涉软件系刘某某开发,即不能证明刘某某以云蜻蜓公司员工的身份实施了职务侵权行为。4.原告亦无证据证明刘某某与云蜻蜓公司存在任何共谋侵权的合意。二、刘某某在(2018)苏01民初2523号案中的相关行为已由生效判决处理,但本案中被诉复制行为并非继续其行为,原告无权基于上案推定的事实再次起诉刘某某承担连带责任。具体来说,(2018)苏01民初2523号案中法院推定刘某某侵害了未来公司软件作品的复制权,但复制行为并非继续性行为,不存在持续性侵权的可能。在没有证据证明刘某某再次实施了复制行为的情况下,原告主张刘某某存在持续性侵权行为没有任何依据,原告再次起诉也违反了一事不二罚的基本原则。三、没有证据证明刘某某存在知识产权惩罚性赔偿规定中的故意侵害、情节严重的情形,对刘某某适用惩罚性赔偿没有事实和法律依据。四、刘某某仅为云蜻蜓公司员工,从云蜻蜓公司取得正常工资,涉案软件销售的收益全部由云蜻蜓公司取得。原告要求刘某某与云蜻蜓公司承担连带责任明显不公。综上,原告诉讼请求没有事实和法律依据,请求法院驳回其全部诉请。

法院认定事实


双方当事人围绕诉讼请求和抗辩主张提交了证据,本院组织双方当事人进行了证据交换和质证。当事人对其真实性无异议的证据,本院对其真实性予以认定。对有争议证据,本院结合全案证据和当事人陈述综合判断和认定。


本院经审理查明:


一、关联案件诉讼情况


未来公司曾以云蜻蜓公司、刘某某侵害其计算机软件著作权为由向本院提起(2018)苏01民初2523号案件诉讼(以下简称2523号案件)。本院于2020年12月25日作出一审判决:1.云蜻蜓公司、刘某某立即停止侵害未来公司涉案软件著作权的行为;2.云蜻蜓公司、刘某某赔偿未来公司经济损失130万元;3.云蜻蜓公司、刘某某赔偿未来公司为制止侵权行为所支付的合理费用8万元。未来公司、云蜻蜓公司、刘某某不服,提起上诉,最高人民法院于2021年5月26日作出(2021)最高法知民终406号判决:驳回上诉,维持原判。上述判决认定:


(一)未来公司涉案软件的相关情况


2014年7月4日,未来公司取得软件名称为“未来网上投标文件制作工具软件(简称:未来投标工具软件) V1.0”、登记号为2014SR090908的计算机软件著作权登记证书。该证书记载,该软件开发完成日期为2013年12月12日,首次发表日期为2014年4月2日。未来公司在申请该计算机软件著作权登记时,提交了计算机软件著作权登记申请表、软件文档以及前后各30页的软件源代码等资料。该软件的著作权登记申请表记载,涉案软件使用的编程语言为Visual Studio2010 C#。主要功能为:未来投标工具软件是未来公司参照南京市建设工程交易中心工具软件相关规范,为南京市建设工程交易中心交易平台量身定做的专用工具软件。技术特点为:采用先进的Microsoft.NET进行开发,采用XML技术存储数据。数据存储灵活,查看便捷。内置独有的AutoCAD读取和显示技术,快速查看、测览各种版本DWG文件而不需要安装Autodesk公司的AUTOCAD软件。内置未来清单软件的招投标文件快速处理引擎,无论生成PDF文档还是标书文件,都有非常明显的速度优势。


2019年1月10日,未来公司将本地计算机连接至Internet地址为“221.226.177.10”、目标地址为“VPN连接”的网络,使用TortoiseSVN软件的“checkout”功能,导出“URL of repository”地址为“svn://192.168.100.2/FTBT_NEW/trunk/code/施工招投标工具代码/ShiGongTBCode”中“Revision”序号为“22”中的源代码。上述证据保全经南京市石城公证处公证并出具了(2019)宁石证经内字第278号公证书。未来公司在该案中主张上述源代码的著作权。未来公司陈述:该软件的源代码一共有11万多行,其中主张著作权的是由其自行撰写的部分,包括6个dll文件,2个exe文件、全部主程序,源代码有78000多行。剩下的部分来自第三方,未来公司不主张著作权。


未来公司在(2018)苏01民初2523号案件中,将其投标软件完整源代码作为证据提交法院,云蜻蜓公司和刘某某已收到未来公司上述源代码。


(二)被诉侵权软件相关情况


2017年7月4日,未来公司的委托代理人进入南京市公共资源交易中心网站http://ggzy.njzwfw.gov.cn,下载名为“云蜻蜓软件-投标文件制作工具1.0.0.9 2017-6-30”的投标软件安装文件,该证据保全经南京市石城公证处公证并出具(2017)宁石证经内字第5337号公证书。


2018年5月29日,未来公司的委托代理人再次进入南京市公共资源交易中心网站http://ggzy.njzwfw.gov.cn,下载名为“云蜻蜓新版工程投标工具V2.0.0.05”的投标软件安装文件,并进入“e路阳光”南京市建设工程网上交易平台网站,查询云蜻蜓投标软件总计被下载使用记录38550次,该证据保全经南京市石城公证处公证并出具(2018)宁石证经内字第4676号公证书。


未来公司陈述,其于2017年7月4日公证下载的云蜻蜓投标文件制作工具软件安装文件(以下简称云蜻蜓安装文件)可以反编译得到相应的源代码,2018年5月29日公证的被诉侵权软件云蜻蜓公司进行了加密,无法进行反编译。故未来公司告以2017年7月4日公证的云蜻蜓安装文件作为侵权比对对象。


二、原告涉案软件的相关情况


原告在本案中提交了2523号案件中的(2019)宁石证经内字第278号公证书,并以该公证书中使用TortoiseSVN软件导出的“Revision”序号为“22”,2014年3月5日上传的未来网上投标文件制作工具软件作为权利基础,以其中原告自行撰写的69253行主张署名权、复制权、发行权、信息网络传播权、修改权的著作权。对剩下来自第三方的部分,原告不主张著作权。


被告认为,原告挑选出的69253行代码,并不是一个完整表达,不具备计算机软件程序应当具备的完整逻辑,不能执行为一个计算机程序,不满足一个计算机软件作品的基本构成要件,不足以构成一个基本的、完整的计算机软件作品。


三、两被告的相关情况


被告云蜻蜓公司成立于2017年1月,2019年12月其名称由“南京云蜻蜓信息科技有限公司”变更为现名。


2016年4月29日,被告刘某某向原告未来公司提交离职申请书,该申请书记载被告刘某某于2012年6月入职原告未来公司。


2021年3月31日,被告云蜻蜓公司出具员工离职证明,该证明记载被告刘某某于2017年1月1日入职被告云蜻蜓公司,在软件事业部担任COO职务,被告刘某某于2021年3月31日自被告云蜻蜓公司处离职。


四、被诉侵权软件及侵权比对的相关情况


(一)被诉侵权软件的情况


2021年3月1日,原告的委托代理人进入南京市公共资源交易中心网站http://ggzy.njzwfw.gov.cn,点击该网站“下载中心”页面的“【南京工程】云蜻蜓新版工程投标工具”,跳转到云蜻蜓公司网站后,点击“南京工程版投标工具(2.1.0.22版本)”对应的下载链接,下载名为“云蜻蜓新版工程投标工具.exe”的投标软件安装文件,并进入“e路阳光”南京市建设工程网上交易平台网站。相关网页显示:查询云蜻蜓投标软件自2017年1月1日至2021年3月1日的记录总数为366969次。该证据保全经南京市石城公证处公证并出具(2021)苏宁石城证字第4624号公证书。


2021年8月30日,原告的委托代理人再次进入南京市公共资源交易中心网站http://ggzy.njzwfw.gov.cn,点击该网站“下载中心”页面的“【南京工程】云蜻蜓新版工程投标工具”,跳转到云蜻蜓公司网站后,点击“南京工程版投标工具(2.1.0.30版本)”对应的下载链接,下载名为“云蜻蜓新版工程投标工具.exe”的投标软件安装文件,并进入“e路阳光”南京市建设工程网上交易平台网站。相关网页显示:查询云蜻蜓投标软件自2017年1月1日至2021年8月30日的记录总数为419532次。该证据保全经南京市石城公证处公证并出具(2021)苏宁石城证字第21198号公证书。


(二)源代码比对的情况


经本院当庭询问,被告云蜻蜓公司以商业秘密为由,未将被诉侵权软件源代码作为证据供原告进行比对,原告未来公司亦不接受各方提交源代码进行当庭现场比对,本院采取各方分别比对并进行比对意见交换的方式。经过两轮的比对及比对意见交换,比对情况如下:


1.比对对象及方法


原告通过反编译软件ILSpy,将(2017)宁石证经内字第5337号公证书、(2021)苏宁石城证字第4624号公证书中云蜻蜓安装文件安装后的程序文件去除配置文件、模板、图片等文件及开源、公共软件外,选取部分核心文件进行反编译,获得源代码,与(2019)宁石证经内字第278号公证书中的原告涉案软件源代码进行逐行人工比对,统计出相似行,计算相似度,出具相应的比对报告。被告针对上述相似行,采用逐行比对、工具比对等方式,排除其认为不应相似的行,重新计算相似度。


2.关于代码行数的统计


原告经统计认为,原告涉案软件代码总行数为218655行,排除17352行空行、36712行注释、末尾含注释的代码行1919行后的有效代码行数为162672行,再排除有效代码行数中的第三方/开源代码行数46800行、废弃/重复文件的代码行46619行后的最终代码行数为69253行,原告已比对的代码行数为36911行(该行数不含注释、空行),原告以36911行作为相似度计算过程中的分母值。


被告经统计认为,原告未来公司有效代码总行数为164249行。其中主程序的代码行数为209626行,排除注释行数35396行、空白行数17765行后的有效代码行数为157965行;其中预览程序的代码行数为7547行,排除注释行数878行,空白行数422行后的有效代码行数为6284行。被告以164249行作为计算相似度的分母。


3.原告逐行人工比对的情况


(1)原告逐行人工比对的结果


原告将(2021)苏宁石城证字第4624号公证书中云蜻蜓投标工具安装文件安装后的程序文件,去除配置文件、模板、图片等文件及开源、公共软件外,选取部分核心文件进行反编译,并进行代码的人工比对,其中已比对的原告涉案软件代码行数为36911行,该行数不含注释、空行,其中被诉侵权软件与原告软件代码相同/实质性相似代码行数为22645,相似度61.35%,详细比对结果见附件一。后经被告云蜻蜓公司比对,原告未来公司认可被告云蜻蜓公司排除相似行中的353行,其中原告认可预览程序中未来UserControl1.cs与云蜻蜓FileBrowser.cs的11行,将相似代码行数调整为为22292行,并将相似度修正为60.39%。


(2)原告关于代码相似的认定规则


原告认为通过工具反编译出来的代码与实际源代码之间会因为变量名称、常量名称、表达式、程序语法、条件逻辑顺序不同等各种因素而出现一些差异,这些差异不影响代码的真实意思表达,即反编译代码和源代码实质性一致。在进行代码相似度判定时,需要结合代码上下文、代码逻辑等进行综合判断。抄袭者会通过修改函数名、类名、变量名、增加或删除部分代码片段,重新排序部分代码片段,或是增加无效干扰代码等来故意降低代码的相似度,在进行代码相似度判定时,需要结合代码上下文、代码逻辑等进行综合判断。原告列出本案部分上述原被告代码比对中的相似认定规则及举例如下:①数值类。(A)坐标及窗口大小、边距等。仅调整了界面中部分组件的边距、宽度,代码处理流程、逻辑、整体布局等仍然实质性相同。(B)颜色及字体大小、字体名称等。如云蜻蜓公司仅把界面文字的字体由“宋体”修改为“微软雅黑”,甚至字体大小(9.75f)都没有调整。另外一处仅调整了背景颜色值,应认定相似。②变量命名方式类。(A)变量名虽然不同,但在方法(函数)中的作用一致。代码中变量名称虽然不同,但结合代码上下文进行分析,该变量的作用一致,因此认定为代码实质性相同。③语法类。(A)参数直接使用和先赋值再使用。未来公司直接使用CurrentPjInfo.SavePath+"\\变量库temp,xml")与云蜻蜓公司先把CurrentPjInfo.SavePath+\\变量库temp,xml赋值给text2,然后再使用text2的效果是一样的。(B)加法赋值运算符的相似。c+=a等效于c=c+a。(C)三目运算与if-else语句的等效。三目运算定义:对于条件<表达式1>?<表达式2>:<表达式3>;"?"运算符的含义是:先求表达式1的值,如果为果,则执行表达式2,并返回表达式2的结果;如果表达式1的值为假,则执行表达式3,并返回表达式3的结果。与如下的if-else语句等效:if(<表达式1>为真){<表达式2>}else<表达式3>)。(D)if条件中“true/false”的先后判断。If判断语句中,先处理条件“是”,然后处理条件“否”,与先处理条件“否”然后处理条件“是”,但“是”和“否”对应的代码逻辑完全一致的,应认为代码相似性。(E)switch与if语句。switch语句中的case条件与if语句中的条件一致,代码逻辑功能相同,应认为代码相似。(F)public、private等限定词。如未来公司的Bool bUpdate=false语句与云蜻蜓公司的public bool bUpdate=false、未来公司的int iALLInfoCount=0语句与云蜻蜓公司的private int iALLInfoCount=0应认为相似。④综合代码上下文进行综合判断的情况。(A)根据特定的提示信息及上下文逻辑关系判断代码实质相似、如未来公司的“pageMoni”“模拟”与云蜻蜓公司的“mobanPage”“模板页面”不一致,但结合特定的提示信息“该page从不显示,只用来放置一些需要的控件临时存储文件信息,主要有些控件不能依靠在程序中new产生,如cll”的相同及坐标值(4,24)、页签索引值(20)的一致,能够判断该部分代码相似。(B)根据代码上下文的逻辑关系、处理流程、变量名称等信息判定代码实质相似。如下图所示,虽然A、B、C三处文字或数值不完全相同,其实只是简单调整了提示文字、微调了控件的坐标及大小,但整个处理逻辑关系、处理流程完全一致,因此判定代码相似。



此外反编译(2017)宁石证经内字第5337号公证书2021)苏宁石城证字第4624号公证书中的被诉侵权软件,获得源代码后,原告选取部分代码,与(2019)宁石证经内字笫278公证书中的原告涉案软件源代码进行比对,原告列举了主程序部分比对代码片段。



原告认为,通过对被告云蜻蜓公司2017年7月软件、2021年3月被诉侵权软件的反编译代码与未来软件的源代码进行比对,云蜻蜓公司在2021年3月的代码中,通过修改函数名称、修改变量名称、调整函数位置、增加无效代码、拆解函数等方式对原告涉案软件持续进行侵权。
4.关键特征比对情况
原告查看(2021)苏宁石城证字第4624号公证书被诉侵权软件反编译源代码、安装后的程序文件以及原告源代码中是否出现原告特有名称、GUID等关键特征信息。具体结果如下:
(1)对DragonFlyTB.exe使用ILSpy反编译后,在得到的ZGSCQtWebserviceFrm.cs中出现了“金润”和“JINRUN”字样。其中“金润”为“北京金润方舟软件科技有限公司”的简称。2009年2月,原告未来公司作为乙方曾与甲方北京金润方舟软件科技有限公司签署合作伙伴协议,约定甲方负责协助乙方开发南京市建设工程交易中心电子标书制作工具,甲方承诺在合同有效期内不得在南京市与第三方建立同类合作伙伴关系,否则需赔偿乙方相应损失。
(2)使用ILSpy反编译ViewFiles.exe并查看,被告代码中出现了与原告源代码ViewnNTF文件夹下Assemblyinfo.cs文件相同的GUID“88103a9e-6df8-48cf-bba6-0b5567a87f94”o根据百度百科所记载,全局唯一标识符(GUID,Globally Unique Identifier)是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。所以,用于生成GUID的算法通常都加入了非随机的参数(如时间),以保证这种重复的情况不会发生。
(3)在云蜻蜓安装文件安装后的程序文件中,“投标保证金.doc”文件的属性信息显示“作者”为“czc”,“最后一次保存者”为“zhuym”,“创建内容的时间”为“2009-11-17 16:28”,“最后一次保存的日期”为“2014-8-13 13:20”;“投标函附录.doc”文件的属性信息显示“作者”为“czc”,“最后一次保存者”为“zhuym”,“创建内容的时间”为”2009-11-17 16:28”,“最后一次保存的日期”为“2013-8-5 8:25”;“一、编制说明.doc”文件的属性信息显示“最后一次保存者”为“zhuym”,“创建内容的时间”为“2010-1-19 11:23”,“最后一次保存的日期”为“2013-8-2 15:58”。原告认为上述“czc”和“zhuym”字样为原告未来公司前员工蔡志成和朱艳梅的姓名拼音缩写。对此,原告提供了2012年6月朱艳梅与原告未来公司签订的《南京市劳动合同书》,约定劳动期限自2012年7月1日至2017年6月30日止,朱艳梅的工作内容为研发部岗位从事软件开发工作。
(4)在云蜻蜓安装程序的反编译代码FileBrowser.cs中发现40余处包含“czc”的代码行,原告认为上述“czc”字样为原告未来公司前员工蔡志成的姓名拼音缩写。
(5)在云蜻蜓程序的反编译代码MainForm.cs中出现了与原告源代码RibbonMainForm.cs未来相同拼写错误。

(6)在云蜻蜓程序的反编译代码MainForm.cs中出现了与原告源代码RibbonMainForm.cs未来相同的4个随机数。

(7)云蜻蜓公司把未来公司涉案软件的SaveMainTabState函数名称篡改为SaveTablePage。

(8)云蜻蜓把未来软件代码中的变量名dlgOpenFile篡改为openFileDialog。

(9)云蜻蜓公司被诉侵权软件更新时间明显错误。云蜻蜓程序的反编译代码代码行ProjectManager.csdSkinLabel1.Text="本次更新说明:\r\nl、软件优化升级\r\n\r\n\r\n\r\n更新日期:2017-8-10\r\n*";中的软件更新时间“2017-8-10”明显错误。
被告认为,在可以进行代码比对并且已经进行过比对的情况下,不应当依据上述特征认定实质性相似。
5.被告关于原告比对情况的抗辩
(1)关于代码行数
被告经统计认为,原告未来公司涉案软件主程序的总代码行数为209626行,排除注释行数35396行、空白行数17765行后的有效代码行数为157965行;原告未来公司预览程序的总代码行数为7547行,排除注释行数878行,空白行数422行后的有效代码行数为6284行。被告将上述有效代码行数作为计算相似度的分母。
(2)关于被告逐行人工比对的结果
针对原告逐行比对的结果,被告经比对认为,主程序中8232行原告认为的相似代码行应当予以排除,相似代码行数应为17647-8232=9415行,被告云蜻蜓公司主程序与原告未来公司主程序的相似度应为9415/157965=5.96%。预览程序中1359行原告认为的相似代码行应当予以排除,相似代码行数应为4998-1359=3639行,被告云蜻蜓公司预览程序与原告未来公司预览程序的相似度应为3639/6284=57.91%。被告认为涉案软件主程序(投标工具)和预览程序是两个独立的程序,应当作为2个软件作品,分别计算其代码相似度。即使将2个软件合并在一起,应当予以排除的相似行数为9591行,计算的相似度也仅为8.13%,具体比对结果详见附件一。后原、被告对上述比对情况进行分类,具体分类情况如下表所示。

分类后,被告云蜻蜓公司将其认为应当予以排除的相似行数调整为9432行,庭审结束后,被告云蜻蜓公司向本庭提交代理词将上述行数再次调整为9238行,并将相似度调整为(22292-9238)/164249=7.95%。根据该相似度,被告认为被诉侵权软件与原告涉案软件不构成实质性相似。
(3)被告关于代码不构成相似的认定规则
被告云蜻蜓公司针对原告的分类回应如下:
1.添加无效干扰代码。被告代码比原告代码多出的部分,可能是开发人员开发时的特殊考虑,也可能只是调试留下的痕迹,甚至可能是开发人员因不良习惯而留下的痕迹,任何被告代码比原告代码多的部分,原告没有证据证明属于“干扰代码”。更不能因为有冗余代码的存在,就将两个实现方式完全不同的代码块认定为相似。
2.修改变量名、修改函数名。变量名、函数名若与原告不同,那该段代码即属于不相同也不相似的代码,在函数整体、变量上下文整体不构成相同或相似的情况下,原告主张“修改”了函数名和变量名没有依据,故对该两种类型被告不予认可。
3.特殊文字/提示雷同,特殊数字/标记雷同。(a)此类型原告共列举23处,且提示多为软件具体运行节点时的提示文本。整个软件中,使用各类弹窗显示的提示文本共482处,代码中字符串17256个。原告所举雷同占比极小,完全可能是偶然相似或是因被告开发人员在学习其他软件运行逻辑时接触到该文本而产生的固有思维等原因导致的相似。(b)提示文本本身过于短小不构成作品。即便照搬了某段字符串,在上下文代码不相同的情况下,也不构成侵权。根据原告认为的特征字符串最多仅能认定被告接触过原告代码,并不能据此认定代码整体实质性相似。
4.相同的拼写错误。在无法进行代码比对的情况下,根据特定的运行错误(软件行业称BUG)推定代码相似,而不是根据特定的“笔误”认定整段代码相似。原告整理此类代码共计仅4处。整个软件共计16余万行,字符数达517万。全文一定存在大量的笔误和拼写错误。仅4处的拼写错误雷同,完全可能是在庞大基数下产生的巧合。另外,在整段代码不构成实质性相似的情况下,拼写错误仅能作为认定接触的参考,不能作为认定实质性相似的依据。
5.原告在意见“其他”项中,列明37项“云蜻蜓2017年代码中也存在”。被告认为,云蜻蜓公司2017年代码并未作为本案证据提交,且上案中也仅认定云蜻蜓公司代码与未来公司代码部分相似,未认定完全相同,因而与云蜻蜓公司2017年代码的比对没有意义,该意见与本案无关。
(4)被告关于涉案软件部分源代码来自第三方的抗辩
被告云蜻蜓公司提交了《中华人民共和国标准施工招标文件》(2007年版),住房城乡建设部、国家工商行政管理总局制定的《建设工程施工合同(示范文本)》(GF-2017-0201),以证明涉案软件运行中生成的各类文本是依照国家标准文件生成的,有确定的文件类型和标准的文本内容,其不是原告独创的内容。
南京市公共资源交易中心是原告及被告共同的被服务方,其通过《南京市建设工程网上招投标数据交换标准》(2016年5月17日版本)以及QQ群传达等方式,对招投标软件的功能模块、数据标准、文件命名等进行要求,也提供了文本模板,行业内同类企业为南京市公共资源交易中心提供服务,均需要遵循其开发要求,被告云蜻蜓公司据此认为涉案软件可自由创作的空间非常有限。
被告云蜻蜓公司提交了其于2017年3月1日与成都梦想凯德科技有限公司签订的“《梦想绘图控件5.2浏览版》技术服务合同”,用以证明其为开发云蜻蜓招投标工具购买了正版组件。被告云蜻蜓公司还提交了成都梦想凯德科技有限公司官网中关于CAD控件的相关说明,并据此认为原告涉案软件中包括CAD.cs代码文件的关于CAD文件浏览的相关代码不享有著作权。
被告云蜻蜓公司提交了《Cell组件/插件帮助文档》部分截图,以证明SaveFile及CloseFile等Cell组件的有关函数系第三方开发,原告不享有著作权。
被告云蜻蜓公司提交了微软ListView示例代码,以证明原告未来公司软件中的ListView等代码是微软公司开发的示例代码,未来公司不享有著作权。
(5)其他抗辩
被告云蜻蜓公司通过二进制对比软件BinDiff工具,将被诉侵权软件的DragonFlyTB.exe和ViewFiles.exe与原告权利软件的主程序和预览程序进行比对,相似度分别为7%和10%。被告结合关联案件的比对情况认为,本案与关联案件的被诉侵权软件没有一致性。
(三)软件运行界面比对的情况
原告未来公司将(2017)宁石证经内字第5337号公证书与(2021)苏宁石证字第4624号公证书中被诉侵权软件的界面进行比对,1.使用Beyond Compare对上述两个程序安装目录中的ico、png格式图标、图片文件进行二进制比较,比对结果如下:

2.选取的27个典型软件界面进行比对,软件界面的整体布局、风格、颜色、位置、字段名称、界面图标/图片的式样大小、操作流程等几乎完全相同。原告认为上述2021年3月和2017年7月的被诉侵权软件界面几乎完全相同,因此被告在关联案件审结后,依然没有停止侵权行为,存在持续侵权行为。
被告云蜻蜓公司提交了涉案软件行业内其他企业制作的同类软件客户端截图,以证明本行业内的其他同类服务供应商,也均遵循了相关国家标准、南京市公共资源交易中心的软件开发要求,参照了相关文本模板,并不能在功能模块、操作顺序和模块命名等方面进行自由创作,各企业的同类软件即使在该部分存在类似,也是相同标准下的固定表达。
五、涉案软件关于GPL协议的情况
(一)GPL协议的相关规则
根据被告提供的GNUGPL许可证的文本,其相关内容如下:
1.GNU通用公共许可证1991.6第二版,版权所有者为自由软件基金会公司,允许每个人复制和发布这一许可证原始文档的副本,但绝对不允许对它进行任何修改。
2.序言载明:(1)大多数软件许可证禁止你自由地共享和修改软件。对比之下,GNU通用公共许可证力图保证你有共享和修改自由软件的自由——保证自由软件对所有用户是自由的。GPL适用于大多数自由软件基金会的软件,以及承诺受自由软件基金会约束的作者所开发的软件(自由软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将你的软件程序置于本许可协议的保护之下。(2)当我们谈到自由软件时,我们指的是自由使用而非价格。我们创建GNU通用公共许可,是为了确保你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);确保你能得到源程序或者在你需要时能得到它;确保你能修改软件或将它的一部分用于新的自由软件;同时确保你了解自己可以做这些事情。(3)为了保护你的权利,我们需要做出一些限制性规定:禁止任何人否定你的权利,或者要求你放弃这些权利。如果你修改了自由软件或者分发了软件的副本,这些规定就转化为你的责任(即你也不得否定他人的权利或要求他人放弃权利)。(4)例如,如果你发布这样一个程序的副本,不管是收费的还是免费的,你必须将你具有的一切权利给予该程序的接受者;你必须保证他们能收到或得到源代码;并且将这些条款给他们看,使他们了解自己的权利。我们采取两项措施来保护你的权利:①给软件以版权保护。②给你提供许可证。它能够许可你复制、分发和/或修改这些软件。
3.有关复制、分发和修改的条款和条件载明:(1)第0条。此许可证适用于任何包含版权所有者声明的程序和其他软件作品,版权所有者在声明中明确说明程序和作品可以在GPL条款的约束下分发。下面提到的“程序”指的是如上所述的程序或软件作品。而“基于程序的作品”指的是程序或者任何受版权法约束的演绎作品,包含如上所述的程序或程序的一部分的作品,上述程序可以是原封不动的,或经过修改的和/或翻译成其他语言的(程序).下文中所称“修改”也包括“翻译”。每个被许可方用“你”来指代。许可证条款不适用于复制、分发和修改以外的行为,上述行为超出这些条款的范围。运行程序的行为不受本许可协议条款的限制。仅当程序的输出内容构成“基于程序的作品”时,这一条款才适用于程序的输出(如只运行程序就不适用该条款)。程序的输出是否受本许可协议条款的约束,这取决于程序的用途。(2)第1条。在满足下列条件时,你可以通过任何媒介原封不动地复制和分发收到的原始程序的源代码:在每一份副本中,显著而适当地附有版权声明,以及不承担担保的声明;保持所有与本许可协议相关的声明及不承担的声明内容完整;将本协议许可的副本分发给上述程序的其他接收者。你可以为转让副本的实际行动收取一定费用。你也有权为提供担保而收取一定的费用。(3)第2条。在满足下列条件时,你可以修改程序的一个或几个副本或程序的任何部分,以此形成的基于程序的作品,并可以按前面第一款的要求复制和分发这一经过修改的程序或基于程序的作品:(a)你必须在修改的文件中附有显著声明,说明你修改了这一文件及具体的修改日期。(b)你发布或出版的软件作品(包括程序的全部或一部分,也包括由程序的全部或部分演绎而成的作品)整体上必须受本许可协议条款的约束,并允许第三方免费使用。(c)如果修改后的程序在常态运行时以交互方式读取命令,在开始进入常规的交互使用方式时,该程序必须打印或显示声明,包括适当的版权声明和没有担保的声明(或者你提供担保的声明);用户可以按此许可证条款重新发布程序的声明;并告诉用户如何看到这一许可证的副本(例外的情况:如果原始程序本身即以交互方式工作,且在运行状态下它并不打印这样的声明,那么你的基于程序的作品也就不用打印声明)。这些要求适用于修改后作品的整体。如果能够确定作品的一部分并非程序的演绎产品,可以合理地认为这部分程序本身即可构成一个单独软件作品,则当它作为独立作品发布时,它不受此许可证和它的条款的约束。但是当你将这部分作为基于程序的作品的一部分发布时,作为整体它将受到许可证条款约束,准予其他许可证持有人使用的范围扩大到整个产品,而无论各个部分的作者是谁。因此,本条款的意图不在彰显权利;或质疑你对独立创建的软件的权利。本条款的目的是行使权利来控制基于程序的作品(合作软件或衍生软件)的分发。此外,如果仅仅将非基于程序的软件与程序或基于程序的软件存储在同一存储或发布介质上,这并不导致非基于程序的软件受到此许可证的约束。(4)第3条。如果你遵守前面的第1、2款,并同时满足下列3条之一,就可以以目标码或可执行程序形式复制或分发程序(或第2款规定的基于程序的作品):(a)在通常用作软件交换的媒体上,和目标码一起附有相关的机器可读形式的完整的源代码。这些源代码的分发应符合上面第1、2款的要求。或者:(b)在通常用作软件交换的媒体上,除目标代码之外,还应附有有效期不少于3年的书面要约,该要约提供给第三方完整机器可读形式的相关源代码,并可收取不超过实际完成源程序发布的实际成本。源代码的分发应符合上面的第1、2款的要求。或者:(c)除目标代码之外,还附有你收到的分发源代码的要约信息(这一选项只适用于非商业性发布,而且只有在你收到的是基于上述b小节的附有上述要约的程序是目标代码或可执行程序时才适用)。源代码是指在修改程序时首选的修改代码的形式。对于可执行软件来说,完整的源程序包括其中的所有模块,以及相关接口定义文件、用来控制可执行程序编译和安装的脚本。分发的源代码不必包含任何常规发布的供可执行程序运行的操作系统的主要组件(如编译器、内核等),除非这些组成部分和可执行程序结合在一起难以剥离。如果采用提供对指定地点的访问从而复制这一方式发布可执行程序或目标代码,那么,提供对同一地点的访问从而复制源代码,也可以视为发布源代码,即使不要求第三方在复制目标代码的同时复制源代码。(5)第4条。除非你按许可证明示的要求去做,否则你不能复制、修改、转许可和分发程序。任何试图用其他方式复制、修改、转许可和分发程序的行为都是无效的。如果你这样做,许可证赋予你的权利将自动终止。然而,对那些从你那里按许可证条款得到副本和权利的人们,只要他们继续全面履行条款,许可证赋予他们的权利仍然有效。(6)第5条。因为无需在许可证上签字,因而你没有必要一定接受这一许可证的约束。然而,只有本许可证能够赋予你修改和分发程序及其演绎作品的权利。如果你不接受许可证,法律将禁止上述行为。因此,如果你修改或分发程序(或任何基于程序作品),就表明你接受这一许可证以及它的所有有关复制、分发和修改程序或基于程序的作品的条款和条件。(7)第10条。如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同,那么可以写信给作者,要求得到许可。如果是由自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定取决于两个主要目标。这两个主要目标是:一是保持自由软件的演绎软件也处于自由状态;二是从整体上促进软件的共享和重复利用。
4.最后的条款和条件载明:如何将这些条款用到你的新程序。如果你开发了新程序,而且你需要公众最大限度地利用之,那么最好的办法是将它变为自由软件使得每个人都能在遵守条款的基础上对它进行修改和重新分发。为了做到这一点,给程序附上下列声明。最安全的方式是将它放在每个源程序的开头,以便最有效地传递拒绝担保的信息。每个文件至少应有“版权所有”行以及声明全文所在位置的说明。
5.GNU官方网站对GNU常见问题有如下问答解释:“聚合版”和其他“修改版”有什么不同?“聚合版”包含有多个独立的程序,并在同一个CD-ROM或其他媒体上发行。GPL允许你制作并发布一个聚合版,即使其他软件的许可证不是自由许可证或不是GPL兼容的许可证也可以。唯一的条件是你的聚合版的许可证不能禁止用户行使每个独立程序的许可证允许的权利。究竟怎么区分是两个独立的程序,还是一个程序的两个部分呢?这是一个法律命题,最终会由法官来决定。我们相信合理的标准既依赖于通信的机制(exec、pipes、pc、共享地址空间的函数调用,等等),也依赖于通信的语义(交换了什么样的信息)。如果两个模块都包含在同一个可执行文件里,那么它们一定是一个程序的组件。如果两个模块运行时是在共享地址空间连接在一起的,那么它们几乎也构成一个组合软件。反过来,pipes、sockets和命令行参数通常都是两个不同程序通信的机制。因此,如果使用它们来通信,这些模块正常应该是独立的程序。但是如果通信的语义非常密切,交换复杂的内部数据结构,那么它们也会被认为是一个大程序的两个组合部分。
(二)关于涉案软件的GPL声明情况
原告涉案软件源代码中的FutureZR文件夹下的Main.cs、SharpZipBaseException.cs、AssemblyInfo.cs等多个文件中包含GPL声明,上述文件均系SharpZipLib开源代码,上述声明记载,本程序是自由软件,你可以基于自由软件基金会发布的GNU GPL许可证再分发或修改本程序,版本为2.0或更新的版本……将其他模块与本库文件静态或动态地链接属于制作一个基于本库文件的演绎作品。该演绎作品整体受到GNU GPL许可证的条款和要求的约束。作为例外,本库文件的版权所有者允许你将本库文件与独立模块链接以生成可执行文件,而不管这些独立模块的开源许可条款如何,并根据您选择的条款复制和分发生成的可执行文件,前提是对于每个链接的独立模块,你还满足该模块许可的条款和条件。如果你修改此库,你可以将此例外扩展到你的库文件版本,但你没有义务这样做。如果你不希望这样做,请从你的版本中删除此例外声明。
被诉侵权软件亦使用了与原告涉案软件相同的SharpZipLib开源代码,且被告云蜻蜓公司亦进行了闭源处理,未进行开源。
审理中,经原告查询,SharpZipLib开源项目组在网站http://iesharpeode.github.io/SharpZipLib/legacy中关于许可证部分记载,1.该库是在GPL下发布的,但有以下例外:将此库与其他模块静态或动态链接是基于此库的组合工作。因此,GNU通用公共许可证的条款和条件涵盖了整个组合。作为一个特殊例外,该库的版权所有者允许您将此库与独立模块链接以生成可执行文件,而不管这些独立模块的许可条款如何,并根据您选择的条款复制和分发生成的可执行文件,前提是对于每个链接的独立模块,您还满足该模块许可的条款和条件。独立模块是不是从该库派生或基于该库的模块。如果您修改此库,您可以将此例外扩展到您的库版本,但您没有义务这样做。如果您不希望这样做,请从您的版本中删除此异常声明。2.注意。该异常已更改以反映最新的GNU类路径异常。#ziplib的旧版本确实有另一个例外,但新版本更清晰,并且不会破坏与旧版本的兼容性。3.底线。简而言之,这意味着您可以在商业闭源应用程序中使用该库。
原告认为,原告涉案软件的FutureZR作为一个独立模块,与主程序进行链接,符合源代码中关于GPL开源许可协议声明的例外情况,从而对GPL开源许可协议的传染性进行阻断。被告则认为,原告涉案软件没有通过库文件“ICSharpCode.SharpZipLib.dll”提供的接口调用该库文件中的相关函数,没有调用该库文件以实现文件压缩功能。未来公司实际采取的方法是:将受GPL协议约束的开源代码存入名称为“FutureZR”的文件夹中,并增加文件名为“FutureZR.cs”的文件,在该文件中,增加了boo1型函数Compresszip(),该函数通过调用开源代码的相关函数实现文件压缩功能,即调用“Zip”文件夹中的“ZipOutputStream.cs”、“ZipEntry.cs”中的函数。未来公司还在“FutureZR.cs”文件中增加了bool型函数Compresszip()等5个函数。从以上内容可知,未来公司修改了开源代码,并重新编译成“FZR.dll”。“FZR.dll”以及相应的源代码属于对开源代码的演绎。未来公司没有以链接的方式调用“ICSharpCode.SharpZipLib.dll”。因此,未来公司使用自由程序的方式不属于“例外声明”中的“链接”的方式,“例外声明”对其不适用。
经本院当庭询问,原告表示不会在本案中公开开源涉案投标工具软件源代码。
经查,原告关联案件中提交其向中国版权保护中心的提交软件登记的材料中,包含一份涉案软件不适用GPL协议的声明。
被告云蜻蜓公司认为,1.原告未来公司软件中包括GPL声明,采用GPL 2.0许可证,整体上受GPLV2协议的约束。2.即使认定原被告软件构成局部的实质性相似,那么未来公司与云蜻蜓公司之间存在GPL协议且仍然合法有效,未来公司无权直接提起软件著作权侵权之诉;本案立案之后,云蜻蜓公司已经停止分发行为,不存在侵权行为。3.即使认为原被告之间的GPL协议关系不再存在并认为被告无权自由使用原告软件,原告自身也是非法的,其非法利益和违反诚信原则之行为不应受到保护和支持。
(三)涉案GPL开源代码与原告涉案软件的关系
经当庭询问,原告确认涉案软件仅包含客户端,不包含后台。根据南京市公共资源交易中心的要求,投标文件在上传前必须经过压缩,涉案投标工具软件通过SharpZipLib开源代码实现压缩功能,压缩功能系涉案软件不可或缺的功能。
关于涉案GPL开源代码与涉案软件的函数调用关系。1.原告未来公司投标工具的主程序FutureTBTool.exe调用了SharpZipLib开源代码。2.原告未来公司投标工具除主程序外的,包括预览程序ViewnNTF.exe在内的其他文件均没有调用SharpZipLib开源代码。3.涉案SharpZipLib开源代码均存放于源代码中的FutureZR目录,经编译后形成FZR.dll,FutureZR目录下包含FutureZR.cs(原告未来公司编写的代码),FutureZR.csproj(工程文件),以及其他文件(来自于SharpZipLib开源代码)。4.涉案软件主程序对FZR.dll的具体调用过程为,在主文件RibbonMainForm.cs的第14084行仅调用了1次FutureZR.cs中的CompressZip()函数。5.主程序与CompressZip()函数之间数据结构传递关系为,主程序传入压缩文件名、要压缩的文件名称及相对路径,CompressZip()函数的返回值是true/false,表示压缩成功还是失败。6.开源代码SharpZipLib的调用全部通过包含CompressZip()函数的FutureZR.cs文件进行,未来投标工具主程序则通过调用FutureZR.cs进行。上述情况详见附件二。
原告认为,未来公司的投标工具主程序FutureTBTool.exe脱离FZR.dll可以独立运行,两者之间只是一个简单的单向函数调用并且只返回true/false,FutureTBTool.exe与FZR.dl1是两个独立程序,FutureTBTool.exe不会受到FZR.dll中GPL协议的传染。根据自由软件基金会(FSF)官网上的GPL-FAQ的描述,开源项目的版权持有者可以在GPL中添加例外声明,且SharpZipLib库中的例外声明来源于知名的Java开源生态圏中GNU Classpath,同时SharpZipLib开源项目官网也明确表示“可以在商业闭源应用程序中使用此库”。未来公司对该开源项目代码的使用符合该开源项目GPL协议中的“例外条款”,进一步说明了未来投标工具代码并不会受到SharpZipLib项目开源代码中GPL协议的“传染”,故未来公司代码不受GPL协议的约束。
六、本案查明的其他事实
关于接触可能性。被告认为,在2022年7月27日的庭审过程中,经当庭演示,原告未来公司软件可以通过反编译软件进行反编译,任何人都可以通过反编译获得未来公司的源代码。除在(2021)最高法知民终406号案件中通过法庭获得未来公司提交的278号公证书所附的源代码外,没有任何证据证明云蜻蜓公司通过非法途径获得未来公司源代码。
2021年3月17日,案外人周剑作为被告云蜻蜓公司员工,签署《入职承诺书》,承诺不将前雇主或第三方的商业秘密、著作权等私自带入公司或运用在工作当中。被告云蜻蜓公司认为其员工入职时进行了相应承诺,其已尽到相关注意义务,无主观恶意。
原告提交的其支付宝账务明细查询记录显示,2018年9月12日,原告收取用户使用原告涉案软件的费用为100元/次,2020年9月26日,收取费用为90元/次,2020年10月23日,收取费用为50元/次。
南京市城乡建设委员会于2020年9月25日发布的《关于适当减免参与限额以下项目投标相关费用的通知》记载,在市公共资源交易中心采用“合理价随机确定中标人法”评标的限额以下施工项目,适当减免部分投标费用,明确招标文件下载费用50元,工具使用费最高50元,平台使用费最高50元。该通知自9月30日起执行。
2022年1月21日,被告云蜻蜓公司使用手机登录QQ,查看与名称为“未来招投标工具交流群”QQ群管理员“未来招投标工具”的聊天记录。该聊天记录显示,被告说,未来比万荟好用一点感觉,现在万荟和地平线都返75,你们目前能返多少呢。“未来招投标工具”回复,目前返现最高是50,每家的运营成本不一样。上述证据保全经南京市石城公证处公证并出具了(2020)苏宁石城证字第1663号公证书。
原、被告当庭确认,涉案软件包括主程序和预览程序,其中主程序用于制作投标文件,预览程序用于查看投标文件。用户在公共资源交易中心下载涉案软件无需付费,使用主程序制作完成投标文件并上传至公共资源交易中心时收取费用。
被告云蜻蜓公司提交的操作视频显示,1.运行“云蜻蜓新版工程投标工具.exe”的投标软件安装文件,安装完成后的程序目录中包含“DragonFlyTB.exe”主程序文件和“ViewFiles.exe”预览程序文件。2.将“Rar.exe”“unRAR.exe”“Axlnterop.iWebPDF.dir等文件与“ViewFiles.exe”文件拷贝至新目录下。3.删除原安装目录下的“ViewFiles.exe”文件。4.分别运行新目录下的“ViewFiles.exe”预览程序文件和原安装目录下的主程序文件,均能够正常运行。被告通过上述操作认为,主程序文件与预览程序是两个独立的软件,结合涉案软件是通过主程序文件上传投标文件进行收费的情况,进行赔偿额计算时应当仅依据主程序的相似度进行计算。原告则认为,主程序和预览程序间存在很多公用文件,两者具有关联。投标文件制作过程中,用户需要使用预览程序查看投标文件以确认正确性,对用户制作投标文件帮助很大,二者结合使用,不能进行割裂。
原告为本案支出了公证费5000元,财产保全保险费24000元。

法院认为

本院认为:


一、原告的权利


关于未来公司是其主张的涉案投标软件自主开发部分的著作权人,在关联案件中已有明确认定并有充分论述,本院不再复述。


二、原告关于被告侵害其涉案软件著作权的主张是否成立


(一)GPLV2协议


1.协议的目的。GPLV2协议序言记载,GNU通用公共许可证力图保证你有共享和修改自由软件的自由——保证自由软件对所有用户是自由的;当我们谈到自由软件时,我们指的是自由使用而非价格。我们创建GNU通用公共许可,是为了确保你有发布自由软件的自由(如果你愿意,你可以对此项服务收取一定的费用);确保你能得到源程序或者在你需要时能得到它;确保你能修改软件或将它的一部分用于新的自由软件;同时确保你了解自已可以做这些事情。GPLV2协议第10条约定,如果你愿意将程序的一部分结合到其他自由程序中,而它们的发布条件不同,那么可以写信给作者,要求得到许可。如果是由自由软件基金会加以版权保护的软件,写信给自由软件基金会。我们有时会作为例外的情况处理。我们的决定取决于两个主要目标。这两个主要目标是:一是保持自由软件的演绎软件也处于自由状态;二是从整体上促进软件的共享和重复利用。因此,GPLV2协议的合同目的是软件自由,保证软件开发者复制、修改、分发软件副本等的自由不被中断地一直传递下去,避免有人利用开源代码后将代码封闭,保证修改或衍生的软件仍能如原始作者所期待的那样给予用户自由而非转变为专有软件。


2.协议的性质。协议的内容具备合同特征,属于的合同范畴。GPLV2协议是针对某一特定的项目,并预先设定好格式化条款的协议,只要授权方选定了该协议,使用该项目的用户就必须遂守该协议,是授权方和用户之间形成的以开源软件源代码为目的的一种民事法律行为。授权方通过GPLV2协议授予不特定的用户复制、修改、再发行等权利,是设立、变更、终止民事法律权利义务关系的协议。授权方选择适用GPLV2协议传播其源代码,用户复制、修改、发行该源代码时默认承诺承继适用GPLV2协议从而保持协议的传递性,该行为是双方真实意思的表示。因此,在用户复制、修改、发行该源代码时协议成立并生效。GPLV2协议是为特定开源项目开发而预先拟定的格式合同,由著作权人向软件程序使用者提出合同条款。其格式化条款保持承继性,且不属于格式合同条款无效的情形,其授权内容符合我国著作权法的规定。综上,GPLV2协议具有合同性质,是授权方和用户订立的格式化著作权合同。


3.协议的权利、义务及传染性。根据GPLV2协议第0条、第1条、第2条的约定,原封不动地复制和分发收到原始程序源代码的许可条件包括,在每一份副本中,显著而适当地附有版权声明,以及不承担担保的声明;保持所有与本许可协议相关的声明及不承担担保的声明内容完整;将本协议许可的副本分发给上述程序的其他接收者。修改授权软件作品,形成基于程序的作品(即演绎作品)的许可条件包括,在修改的文件中附有显著声明,说明你修改了这一文件及具体的修改日期;发布或出版的软件作品(包括程序的全部或一部分,也包括由程序的全部或部分演绎而成的作品)整体上必须受本许可协议条款的约束,并允许第三方免费使用。


4.违反GPL许可条件的法律后果。根据GPLV2协议第4条的约定,如果被许可人违反上述许可条件,根据GPL协议规定则不得对开源软件进行复制、修改、再授权或发布。任何试图以其他方式进行复制、修改、再授权或者散布该程序的行为均为无效,并且将自动终止基于本授权所享有的权利。


5.非正当手段获取包含GPL协议软件源代码的行为的后果。非正当手段获取包含GPL协议软件源代码的行为,一方面,虽然其获取的源代码中包含GPL协议,但是由于该行为未通过权利人发布的正当手段取得源代码,且与我国著作权保护的精神相违背,不应认定其获取了权利人软件的GPL授权许可。另一方面,非正当手段获取包含GPL协议软件源代码的行为人,由于对权利人软件实施了复制、修改、分发等行为,其实际上以实践行为做出了对GPL协议要约的承诺,其负有GPL协议中的所约定的相关义务。


6.GPL开源协议与软件业的关系。使用开源协议是软件开发者将其软件开源最常见的方式,而在众多开源协议中,GPL协议是最受欢迎且应用范围最广的。开源许可协议已经成为国际软件行业内公认的有效契约文本,遵守协议文本规定也是信守诚实信用原则的体现。只有各方均信守开源授权许可协议中的条款,才能让软件源代码持续开源传播下去,繁荣软件市场,保证公众能享受到开源软件带来的成果。


(二)GPLV2协议对原告未来公司涉案投标软件的影响


承前所述,对于在逻辑上与开源代码有关联性且整体发布的衍生作品,只要其中有一部分适用了GPLV2协议发布,那么整个衍生作品都必须适用GPLV2协议而公开。但是如果能够确定作品的一部分并非程序的衍生作品,是独立的,则这部分独立的程序发布时可以不受GPL的约束。判断GPL协议所能传染的衍生软件或修订版本,区分开源代码与自有代码,即确定自有代码是如何与开源代码结合或交互是前提。其次应结合代码的使用场景,即结合代码的功能及其在软件中所起的作用进行判断。最终确定被传染的部分应当是与原开源软件形成密切通信使得二者高度牵连融合成一体的程序,而非只要有数据交换就会构成传染。


本案中,本院要求原告针对涉案投标软件梳理出了涉案软件处理流程图和使用编程工具导出函数调用关系图,以确定原告自有代码与GPL开源代码的交互方式,并结合GPL开源代码的作用进行综合判断。原告涉案投标软件主要包含主程序和预览工具,分别进行评述。


1.关于主程序


因受GPL协议的影响,本院对原告关于两被告侵害涉案软件主程序部分著作权的主张不予采信,具体理由如下:


第一,虽然主程序中的主文件RibbonMainForm.cs仅调用1次FutureZR.cs中的CompressZip()函数,主程序与CompressZip()函数之间数据结构传递关系亦较为简单,但是在主程序与涉案GPL开源代码存在函数调用关系的情况,涉案GPL开源代码实现的压缩功能系投标文件上传前不可或缺的功能,因此,主程序系涉案GPL开源代码的衍生作品,受GPL协议的约束。


第二,关于原告主张其涉案软件适用SharpZipLib开源代码中的例外声明,从而阻断GPL开源许可协议传染的主张。本院认为未来公司通过将自行编写的FutureZR.cs文件与SharpZipLib开源代码一同编译成FZR.dll,并由主程序对其进行调用的方式,不符合“例外声明”中“一个独立的模块是一个不从本库衍生或基于本库的模块”关于独立模块的约定,“例外声明”对其不适用,本院对原告的上述主张不予采信。


第三,原告涉案软件的主程序部分受GPL协议约束,因此原告必须公开源代码。原告未公开开源该部分软件源代码。审理期间经本院询问,原告表示不会在本案中公开开源涉案投标工具软件源代码。


第四,原告违反了GPLV2协议要求提供相应的源代码的义务,违反了GPL协议,构成违约,同时导致授权人与原告之间的授权自动解除,原告基于GPL协议获得的许可终止,原告对原GPL开源代码的继续使用系无权使用。原告起诉被告行为不当,构成侵权,但其自身首先应当规范使用开源代码,遵守开源协议,并证明自身权利的正当和合法,否则即会导致一个不当、不法的行为人指责另一个实施相同行为的不当、不法行为人的逻辑怪圏。法院如果基于原告的该权利认定其他行为人构成计算机软件侵权,即会保护原告未来公司的不当行为带来的利益,势必赋于其特殊法律地位和特别商事利益,不符合公平、诚信原则。


第五,原告向中国版权保护中心的登记计算机软件著作权时,提交了一份涉案软件不适用GPL协议的声明,原吿作为专业的软件开发者,理应对开源协议负有更髙的注意义务,通过技术手段解决GPL协议过于严格的问题。


第六,对原告未来公司违反GPL协议的行为给予侵权法上的保护,势必虚置GPL协议关于源代码持续开源的相关规定,对于通过GPL协议让源代码持续开源传播产生不利影响。


综上,针对原告涉案软件的主程序部分,本院对原告主张两被告构成著作权侵权的主张不予釆纳,对其要求两被告承担相应的侵权责任的诉讼请求,本院不予支持。


2.关于预览程序


虽然预览程序同主程序文件一同进行编译,但是根据被告云蜻蜓公司提交的操作视频,预览程序文件与主程序文件相互独立,其实现独立的查看投标文件的功能,并非用户制作、上传投标文件所必需。预览程序文件连同不包含GPL开源代码的DLL文件,脱离主程序后在新目录下能够独立运行。主程序目录下删除预览程序文件后,主程序亦能独立运行。因此,预览程序不是涉案GPL开源代码的衍生作品,未被GPL开源代码传染,故不受GPL协议的约束。原告主张该部分软件著作权的保护,以及被告是否侵害该部分软件著作权的判断,均不受GPL协议的影响。


(三)被告是否侵害原告涉案软件预览程序部分的著作权


著作权侵权案件中判断被诉侵权作品是否使用了享有著作权作品的方法一般适用“接触加实质性相似”的原则。关于被告云蜻蜓公司具有接触到原告主张权利的涉案软件的可能性,在关联案件中已充分论述,本院不再复述。关于是否实质性相似,本院认为被诉侵权软件与原告主张权利的软件,两者预览程序部分实质性相似,具体理由如下:


1.关于相似度计算的分母,原告认为应当以其已比行数的5907行作为依据,对此本院认为,参与比对的代码由原告选取,无法通过已比对部分的局部相似度推断预览程序的整体相似度,因此在相似度的计算时,应以预览程序排除无效代码、第三方代码后的代码行数6284作为计算基数。


2.相似度区间估计。经比对,原告未来公司主张相同/实质性相似的代码行数为4998行,排除其认可云蜻蜓公司主张不相似的行数11行,共计4987行。被告主张排除原告认为相似行中的1359行,即被告云蜻蜓公司认可的相同/实质性相似的代码行数为3639行。据此本院认为预览程序的相似度区间为[57.91%,79.36%]。


3.相似度点估计以及是否构成实质性相似。被告认为特征字符串的相似度最多仅能认定被告接触过原告代码,并不能据此认定代码整体实质性相似。对此本院认为,通过对目标程序进行反编译后得到的源代码进行手工比对的方法存在一定误差,但是通过比对过程中,对被诉侵权软件的关键信息特征予以排查,以及原被告的比对意见,本院综合后进行相似度的点估计。结合被诉侵权软件中存在与原告相同的GUID、第三方程序选择适用、随机数、原告员工拼音缩写、书写缺陷等,被告难以进行合理解释等情况,本院基于区间相似度认定相似度为79.36%。


综上,结合该相似度认定情况、逐行比对报告中的被诉侵权软件中存在大量的直接抄袭等情况,本院认为被诉侵权软件与原告涉案软件的预览程序部分实质性相似。


被告云蜻蜓公司未经原告许可,擅自复制、修改并以自己开发的软件的名义商业性使用被诉侵权软件预览程序部分,侵犯了原告对涉案软件预览程序部分享有的署名权、修改权、复制权、发行权、信息网络传播权。


关于被告刘某某是否侵犯了原告对涉案软件享有的著作权。原告并未证明在关联案件判决后,刘某某个人实施了新的侵权行为,或与云蜻蜓公司实施新的共同侵权行为,本院对原告关于被告刘某某侵害其著作权的主张不予采信,对要求被告刘某某承担侵权责任的诉讼请求不予支持。


三、责任的承担


本案中,被告云蜻蜓公司侵犯了原告对涉案软件预览程序部分享有的著作权,应承担侵权责任,原告要求其承担赔偿责任,本院予以支持。


著作权法第五十四条规定,侵犯著作权或者与著作权有关的权利的,侵权人应当按照权利人因此受到的实际损失或者侵权人的违法所得给予赔偿;权利人的实际损失或者侵权人的违法所得难以计算的,可以参照该权利使用费给予赔偿。对故意侵犯著作权或者与著作权有关的权利,情节严重的,可以在按照上述方法确定数额的一倍以上五倍以下给予赔偿。权利人的实际损失、侵权人的违法所得、权利使用费难以计算的,由人民法院根据侵权行为的情节,判决给予五百元以上五百万元以下的赔偿。赔偿数额还应当包括权利人为制止侵权行为所支付的合理开支。《最高人民法院关于审理侵害知识产权民事案件适用惩罚性赔偿的解释》第三条第一款规定,对于侵害知识产权的故意的认定,人民法院应当综合考虑被侵害知识产权客体类型、权利状态和相关产品知名度、被告与原告或者利害关系人之间的关系等因素。第四条第一款规定,对于侵害知识产权情节严重的认定,人民法院应当综合考虑侵权手段、次数,侵权行为的持续时间、地域范围、规模、后果,侵权人在诉讼中的行为等因素。


原告主张以被告云蜻蜓公司的获利35420750元确定赔偿额,并在此基础上适用惩罚性赔偿。本院认为,被诉侵权软件的收费标准在2020年4月、2020年9月发生变化,但是原告并未举证证明上述各时间段内的使用次数,结合案涉软件普遍存在返利情况,原告提出被告获利情况的计算结果没有准确依据,本院将综合现有证据对被告实际从涉案软件使用中获得的受益进行酌定。首先,被诉侵权软件自2017年1月1日至2021年8月30日的记录总数为419532次,减去原告在关联案件中已经主张的38550次,本案中被诉侵权软件涉及的使用次数为380982次有事实依据,本院予以采纳。其次,涉案软件预览程序在整个软件中有效代码行数的占比情况,以及对实现被告被诉侵权软件的整体功能所起的作用。再次,结合预览程序的相似度情况。综上,本院确定被告的侵权获利为100万元。


关于惩罚性赔偿。适用惩罚性赔偿应满足“故意”侵权和情节“严重”两个要件,“故意”属于适用惩罚性赔偿主观方面的构成要件。“情节严重”属于适用惩罚性赔偿客观方面的构成要件。本案中原告主张适用惩罚性赔偿,本院认为:首先,从主体上来看,被告云蜻蜓公司与原告未来公司处于相同行业,都基于南京市公共资源交易中心开展招投标业务,可以确认原、被告具有竞争关系。其次,从主观上来看,被告云蜻蜓公司在经过关联案件审理且法院判令其停止侵害原告计算机软件著作权的情况下,仍然再次侵害原告未来公司相同权利基础的计算机软件著作权,被告云蜻蜓公司属于故意侵权、重复侵权。最后,从造成后果来看,被告的行为侵占了原告的市场,给原告造成了经济损失。综合以上因素,本院对原告在本案中适用惩罚性赔偿的主张予以支持,以被告云蜻蜓公司侵权获利的3倍即300万元确定赔偿额。


关于原告主张的为制止侵权行为而支出的合理费用,对公证费予以支持、对时产保全保险费用中的合理部分子以支持。


裁判结果


综上,依照《中华人民共和国著作权法》第十条、第五十三条第一项、第五十四条、《计算机软件保护条例》第五条、第七条、第八条、第二十三条、第二十四条、《最高人民法院关于审理著作权民事纠纷案件适用法律若干问题的解释》第七条、第二十六条、《最高人民法院关于审理侵害知识产权民事案件适用惩罚性赔偿的解释》第三条第一款、第四条第一款、《中华人民共和国民事诉讼法》第一百四十五条规定,判决如下:

一、 被告江苏云蜻蜓信息科技有限公司于本判决生效之日起十日内赔偿原告南京未来高新技术有限公司经济损失300万元;


二、 被告江苏云蜻蜓信息科技有限公司于本判决生效之日起十日内赔偿原告南京未来高新技术有限公司为制止侵权行为所支出的合理费用10000元;


三、 驳回原告南京未来高新技术有限公司对被告刘某某的诉讼请求;


四、 驳回原告南京未来高新技术有限公司的其他诉讼请求。


本案案件受理费141800元,由原告南京未来高新技术有限公司负担100000元,由被告江苏云蜻蜓信息科技有限公司负担41800元。保全费5000元,由被告江苏云蜻蜓信息科技有限公司负担。


如果未按本判决指定的期间履行给付金钱义务,应当按照《中华人民共和国民事诉讼法》第二百六十条之规定,加倍支付迟延履行期间的债务利息。


如不服本判决,可在判决书送达之日起十五日内,向本院递交上诉状,并按对方当事人的人数提岀副本,上诉于最髙人民法院。同时,根据国务院《诉讼费用交纳办法》的有关规定,向最高人民法院预交上诉案件受理费。


审 判 长  谢慧岚


审   判   员  雒   强


审   判   员  芮旭丽


二〇二二年九月十九日


技术调查官  张耀超


法 官 助 理  刘淑娇


书   记  员  韩   颖


附件一:原、被告关于源代码逐行比对的结果及相似度



附件二:涉案GPL开源代码与原告涉案软件的关系



洞察商业关系

提高管理效率

防范诉讼风险

尽在商业合规

如需了解详情或试用

欢迎扫码添加知产宝小管家微信号

或致电知产宝客服

010-82005878



欲申请知产宝试用账号、了解知产宝产品和服务体系,请看下图  



点“在看”不失联,每天都能学习新案例哦

继续滑动看下一个
知产宝
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存